#——————————————————————————————————————————————————————————————————————————————
#UOS打包脚本
#首先可以查看当前已经安装程序的名称和位置
#正式使用前，可以将各echo行注释掉，这里只是用于测试
ls ~/.local/share/applications/
#另一种可能是.desktop文件存放在桌面，则
#ls ~/Desktop/

#——————————————————————————————————————————————————————————————————————————————
#进行必要的交互，获取需要修改的信息
read -p "请输入您要打包软件的中文名称：" name_zh_cn  
echo "您要打包的是:${name_zh_cn}" 
read -p "请输入版本号：" version
read -p "请输入您的姓名："
read -p "请输入您的联系方式或邮箱：" email
desktop_file=~/.local/share/applications/$name_zh_cn'.desktop'
#当desktop文件存放在桌面或别处时，请修改这里的路径
#desktop_file=~/Desktop/$name_zh_cn'.desktop'

#读取.desktop文件内容
#var=`echo $desktop_file | awk -F ' ' '{print $1,$8}' |sed "s/=/ /g"`
var=$desktop_file
#………………………………………………………………………………………………………………………………………………………………………………………………………………
#一句话介绍描述
#可在官网，软件下载站找到相关描述，或自己撰写
app_note=`cat $var | awk -F '=' 'NR==2{print $2}'`
echo 软件简介=$app_note

#………………………………………………………………………………………………………………………………………………………………………………………………………………
#英文名(驼峰命名)
#驼峰命名是指混合使用大小写字母来构成变量和函数的名字，可理解为：几个单词不用空格组合在一起，首字母大写区分彼此。
#upper_name="Kwmusic"
upper_name=`cat $var | awk -F '=' 'NR==8{print $2}'| sed -e 's/.exe//g'|sed "s/\b\(.\)/\u\1/g"`
echo 英文名=$upper_name

#………………………………………………………………………………………………………………………………………………………………………………………………………………
#中文名，此处名字需要与deepin-wine助手安装exe程序时，确认窗口显示的中文名字相一致，
#也和desktop文件中name后的名字一致。如果确实显示为英文，这里也写英文。
name_zh_cn=`cat $var | awk -F '=' 'NR==2{print $2}'`
echo 软件名=$name_zh_cn
#………………………………………………………………………………………………………………………………………………………………………………………………………………
#域名，
#一般为官网网址中不含www和com的部分，比如：www.winmount.com,这里指winmount

#app_url=$(echo $var |awk '{print $2}')
app_url=$(echo $upper_name |tr [:upper:] [:lower:])
echo 软件网址=$app_url
#………………………………………………………………………………………………………………………………………………………………………………………………………………
#分类
#AudioVideo音视频，Audio音频，Video视频，Development开发，Education教育，Game游戏，
#Graphics图形，Network网络，Office办公，Settings设置，System系统，Utility实用工具
#以上为主分类，更多细分类可参考https://blog.csdn.net/shawzg/article/details/106943100
cagegories=`cat $var | awk -F '=' 'NR==4{print $2}'`
echo 类型=$cagegories
#………………………………………………………………………………………………………………………………………………………………………………………………………………
#exe程序地址，注意开头的c是小写
#通过查看desktop文件获得，通常是“Exec=”一行的末尾一段，比如下面一行作为例子：
#C:\\\\Program\\ Files\\\\Meitu\\\\XiuXiu\\\\XiuXiu.exe
#改写为：c:\\Program Files\\Meitu\\XiuXiu\\XiuXiu.exe
#如果可执行文件在用户目录时，用“$USER”代替用户名，比如下面一行：
#"c:\\users\\你的uos账户名字\\Application Data\\Typeeasy\\11.5\\TypeEasy.exe"
#再改写为"c:\\users\\$USER\\Application Data\\Typeeasy\\11.5\\TypeEasy.exe"
#path="C:\\Program Files\\kuwo\\kuwomusic\\9.1.1.4_W4\\bin\\kwmusic.exe"

path=`cat $var | awk -F '=' 'NR==6{print $2}' |sed -e 's/^.*c\:/C\:/g'|sed 's/\//\\\\/g'` 
echo 路径=$path

#exe程序名
#上面exe文件路径最后的部分
main_exe=`cat $var | awk -F '=' 'NR==8{print $2}'`
echo 主程序=$main_exe

#………………………………………………………………………………………………………………………………………………………………………………………………………………
#版本号
#Deepin-wine助手安装确认窗口可以显示，安装完成试运行，通常"关于"中会显示,建议以“关于“中显示为准。
#version="6.0.3.3"

echo 版本号=$version

#………………………………………………………………………………………………………………………………………………………………………………………………………………
#容器ID, 
#直接在desktop文件中，找到类似Exec=env WINEPREFIX="/home/henryuos/.deepinwine/apps/美图秀秀_1"一行，
#其中“美图秀秀“是被安装的程序的名字，后面“_”之后的字符串就是容器ID。
#也可到deepin-wine助手默认把程序文件安装到~/.deepinwine/apps目录下，查看生成的“中文名_字符串”的文件夹，容器ID指“_”后面的字符串
#比如程序安装目录为~/.deepinwine/apps/WinMount_1，提取其中“_”后面的字符串“1”

apps_wineid="1"

#………………………………………………………………………………………………………………………………………………………………………………………………………………
#您的邮箱
#email="uoszhongce@163.com"

echo email=$email



#………………………………………………………………………………………………………………………………………………………………………………………………………………
#……………………………………以下部分为不需要编辑的内容………………………………………………………………………………………………………………

#………………………………………………………………………………………………………………………………………………………………………………………………………………
#……………………………………获取脚本所在路径，cd切换到脚本目录……………………………………………………………………………………………
cd $(dirname $0)
#cd $(dirname $(readlink $0)) #soft  link

#………………………………………………………………………………………………………………………………………………………………………………………………………………
#格式化程序名
name=$(echo $upper_name |tr [:upper:] [:lower:])
url=$app_url"."$name
if [ $app_url == $name ]; then
 url=$name
fi
echo "package ""com."$url".deepin"" ......"

#………………………………………………………………………………………………………………………………………………………………………………………………………………
chmod +x *.sh
chmod +x icotool
chmod +x wrestool
chmod +x ./debian/*

#rm -fr package_save/
rm -fr final.dir/
rm -fr icons/
rm -fr staging.dir/

#………………………………………………………………………………………………………………………………………………………………………………………………………………
#将容器复制到上级文件夹并改名
cp -r ~/.deepinwine/apps/$name_zh_cn"_"$apps_wineid/ ~/.deepinwine/"Deepin-"$upper_name/

#………………………………………………………………………………………………………………………………………………………………………………………………………………
#最终生成的包的描述
export app_description=$app_note
#应用程序英文名
export app_name=$upper_name
#应用程序中文名
export app_name_zh_cn=$name_zh_cn
#要打包的原始容器名（目前假定容器一定存放于当前用户目录下)
#export origin_bottle_name=".WeChat"
#部署时在用户机器上的容器名（部署后位于~/.deepinwine/容器名)
export public_bottle_name="Deepin-"$upper_name
#desktop文件中的分类
export desktop_file_categories=$cagegories
#desktop文件中的图标名,与包名匹配
#export desktop_file_icon="deepin.com.wechat.svg"
#desktop文件中StartupWMClass字段。用于让桌面组件将窗口类名与desktop文件相对应。这个值为实际运行的主程序EXE的文件名，wine/crossover在程序运行后会将文件名设置为窗口类名
export desktop_file_main_exe=$main_exe
export exec_path=$path
#最终生成的包的包名,包名的命名规则以deepin开头，加官网域名（需要前后对调位置），如还不能区分再加上应用名
export deb_package_name="com."$url".deepin"
#专业版的包名
export elephant_deb_package_name="deepin.com."$name
#最终生成的包的版本号，版本号命名规则：应用版本号+deepin+数字
export deb_version_string=$version"deepin1"
#之前老的包名，安装新的包自动卸载老的包
export old_package_name="deepin.com."$name
export deb_packager_email=$email

wine_depends="libasound2 (>= 1.0.16), libc6 (>= 2.28), libglib2.0-0 (>= 2.12.0), libgphoto2-6 (>= 2.5.10), libgphoto2-port12 (>= 2.5.10), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.4.0), liblcms2-2 (>= 2.2+git20110628), libldap-2.4-2 (>= 2.4.7), libmpg123-0 (>= 1.13.7), libopenal1 (>= 1.14),
libpcap0.8 (>= 0.9.8), libpulse0 (>= 0.99.1), libudev1 (>= 183), libvkd3d1 (>= 1.0), libx11-6, libxext6, libxml2 (>= 2.9.0),
ocl-icd-libopencl1 | libopencl1, udis86, zlib1g (>= 1:1.1.4), libasound2-plugins, libncurses6 | libncurses5 | libncurses"

export package_depends="$wine_depends, deepin-wine-plugin-virtual"

export apprun_cmd='$HOME/.deepinwine/deepin-wine5-stable/bin/wine'
export SPECIFY_SHELL_PATH='$HOME/.deepinwine/deepin-wine-helper/run_v3.sh'

export patch_loader="LD_PRELOAD=/opt/apps/$deb_package_name/files/libloader.so"

./script-packager.sh $@

echo $deb_package_name
